import { Message } from 'element-ui'
import router from './router'
import store from './store'
// 白名单列表
const whileList = ['/login', '/404']

// 注册导航守卫
router.beforeEach(async(to, from, next) => {
  // 获得token
  const _token = store.getters.token
  // 是否登录
  const userInfo = store.getters.isLogin
  // token存在
  if (_token) {
    // 判断是否正确 去登录页,直接跳转首页
    if (userInfo && to.path === '/login') {
      return next('/')
    }
    // token正确并且不是去登录页,放行
    if (userInfo) {
      // debugger
      return next()
    }
    // token存在,用户信息不存在
    try {
      // 尝试获取用户信息
      await store.dispatch('user/getUserInfo')
      // 信息获取到了  调用筛选路由的action动态添加路由信息
      await store.dispatch('permission/filterRoutes')

      // if (to.path === '/login') {
      //   return next('/')
      // }
      // 加了动态路由 不能直接放走， 是路由的坑，加上to
      return next(to)
    } catch (error) {
      // token有问题
      store.dispatch('user/loginOut')
      Message.error('身份验证失效,请重新登录!')
      // 是登录,直接去登录页
      if (to.path === '/login') {
        return next()
      }
      // 否则直接打回登录页
      return next('/login?redirect=' + to.fullPath)
    }
  }
  // 没有token to.path:要去的页面
  if (whileList.includes(to.path)) {
    return next()
  }
  return next('/login')
})
